class EncuentrosController < ApplicationController
  def index
    list
    render :action => 'list'
  end

  # GETs should be safe (see http://www.w3.org/2001/tag/doc/whenToUseGet.html)
  verify :method => :post, :only => [ :destroy, :create, :update ],
         :redirect_to => { :action => :list }

  def list
  	if params[:notice] != nil		 
		flash[:notice] = params[:notice]
	else
		flash[:notice] = "Operacion realizada con extio"
	end
    @encuentro_pages, @encuentros = paginate :encuentros, :per_page => 10
  end

  def show
    @encuentro = Encuentro.find(params[:id])
  end

  def new
    @encuentro = Encuentro.new
  end

  def create
    # {"commit"=>"Crear", "equipos"=>{"equipo2_id"=>"2", "equipo1_id"=>"1"}, "encuentro"=>{"fecha(1i)"=>"2007", "fecha(2i)"=>"6", "fecha(3i)"=>"30", "fecha(4i)"=>"16", "fecha(5i)"=>"53"}, "lugar"=>{"escenario_id"=>"1"}, "arbitros"=>{"arbitro3_id"=>"1", "arbitro2_id"=>"1", "arbitro5_id"=>"1", "arbitro4_id"=>"1", "arbitro1_id"=>"1"}}
    
  @encuentro = Encuentro.new(params[:encuentro])
    
	@encuentro.escenario = Escenario.find(params[:lugar][:escenario_id])
	
    ok = true;
    
	selected_arbitros = []
  arbitrosParaElEncuentro = []
	  
	t_arbitro_1 = Arbitro.find(:first,:conditions => "nombre = '#{params[:arbitro1][:nombre]}'")
	params[:arbitro1][:id] = t_arbitro_1.id
	
	t_arbitro_2 = Arbitro.find(:first,:conditions => "nombre = '#{params[:arbitro2][:nombre]}'")
	params[:arbitro2][:id] = t_arbitro_2.id
	
	t_arbitro_3 = Arbitro.find(:first,:conditions => "nombre = '#{params[:arbitro3][:nombre]}'")
	params[:arbitro3][:id] = t_arbitro_3.id
	
	t_arbitro_4 = Arbitro.find(:first,:conditions => "nombre = '#{params[:arbitro4][:nombre]}'")
	params[:arbitro4][:id] = t_arbitro_4.id
	  
	t_arbitro_5 = Arbitro.find(:first, :conditions => "nombre = '#{params[:arbitro5][:nombre]}'")
	params[:arbitro5][:id] = t_arbitro_5.id
	  
  selected_arbitros << params[:arbitro1]
	selected_arbitros << params[:arbitro2]
 	selected_arbitros << params[:arbitro3]
	selected_arbitros << params[:arbitro4]
	selected_arbitros << params[:arbitro5]
	  
	puts selected_arbitros.inspect
	
    selected_arbitros.each { |iter|
    arbitro = Arbitro.find(iter[:id])
    arbitroEncuentro = ArbitroEncuentro.new
      
      if( not @encuentro.arbitros.include? arbitro)
        arbitroEncuentro.arbitro = arbitro;
        arbitroEncuentro.encuentro = @encuentro;
        arbitrosParaElEncuentro << arbitroEncuentro;
      else
        ok = false
        break
      end
    }

   equiposParaElEncuentro = []
    params[:equipos].each { |key , id|
      calendario = Calendario.new
      calendario.fecha = @encuentro.fecha
      calendario.encuentro = @encuentro;
      equipo = Equipo.find(id)
      
      if(not @encuentro.participantes.include? equipo)
        calendario.equipo = equipo;
        equiposParaElEncuentro << calendario;
      else
        ok = false
        break
      end
    }

    if(ok)
      if @encuentro.save
        equiposParaElEncuentro.each { |i|
          i.save
      }
  
      arbitrosParaElEncuentro.each { |i|
          i.save
      }
        flash[:notice] = 'Encuentro ha sido creado exitosamente.'
        redirect_to :action => 'list'
      else
        render :action => 'new'
      end
      else
         flash[:error] = ""
         render :action => 'new'
    end
  end

  def edit
    @encuentro = Encuentro.find(params[:id])
  end


  def update
    @encuentro = Encuentro.find(params[:id])
    if @encuentro.update_attributes(params[:encuentro])
      flash[:notice] = 'Encuentro ha sido actualizado exitosamente.'
      redirect_to :action => 'show', :id => @encuentro
    else
      render :action => 'edit'
    end
  end

  def destroy
   encuentro =  Encuentro.find(params[:id])
   encuentro.estadisticas.each{ |estadistica|
      estadistica.destroy
   }
   encuentro.destroy
	t_cal = Calendario.find(:all, :conditions => "encuentro_id = '#{params[:id]}'")
	t_cal.each { |t|
		Calendario.destroy(t[:id])
	}
	
	t_arb_encuentro = ArbitroEncuentro.find(:all, :conditions => "encuentro_id = '#{params[:id]}'")
	t_arb_encuentro.each {|tae|	
	  	ArbitroEncuentro.destroy(tae[:id])
	}
	  
    redirect_to :action => 'list'
  end
	  
  def auto_complete_for_arbitro1_nombre  		
  	  auto_complete_responder_for_arbitros params[:arbitro1][:nombre]
  end	
  
  def auto_complete_for_arbitro2_nombre
  	  auto_complete_responder_for_arbitros params[:arbitro2][:nombre]	
  end
	  	
  def auto_complete_for_arbitro3_nombre
  	  auto_complete_responder_for_arbitros params[:arbitro3][:nombre]	
  end		  	  
	  
  def auto_complete_for_arbitro4_nombre
  	  auto_complete_responder_for_arbitros params[:arbitro4][:nombre]	
  end	
	  
  def auto_complete_for_arbitro5_nombre
  	  auto_complete_responder_for_arbitros params[:arbitro5][:nombre]
  end	
	  	
  private
  def auto_complete_responder_for_arbitros(value)  	
  	@arbitros = Arbitro.find(:all, 
    :conditions => [ 'LOWER(nombre) LIKE ?',
    '%' + value.downcase + '%' ], 
    :order => 'nombre ASC',
    :limit => 8)
  	render :partial => 'completer' 
  end
end
